
#ifndef WM5OBJECT_H
#define WM5OBJECT_H

#include "rttiSystem.h"
#include "../internal/cuCoreLib.h"

namespace z3d
{


class zelObject
{
// Run-time type information.
public:
    virtual const Rtti& GetRttiType () const;
    bool IsExactly (const Rtti& type) const;
    bool IsDerived (const Rtti& type) const;
    bool IsExactlyTypeOf (const zelObject* object) const;
    bool IsDerivedTypeOf (const zelObject* object) const;
    static const Rtti TYPE;


// Abstract base class.  Construction and destruction.
protected:
    zelObject ();
public:
    virtual ~zelObject ();

    // TODO:  Allow copy constructors and assignment operators?
};


#include "zelObject.inl"

}

#endif
